//创建服务
//定义一个接口 /api/users，返回一个用户列表，包含id和name两个字段。
//读取db.json文件，向前端返回数据。
require('dotenv').config();//导入dotenv模块，用于读取.env文件
const http = require('http');//导入http模块，用于创建http服务器
const fs = require('fs');//导入fs模块，用于读取文件
const OpenAI = require('openai');//导入openai模块，用于调用openai的api
const openai = new OpenAI({
    baseURL: 'https://api.deepseek.com',
    apiKey: process.env.DEEP_AI_API_KEY,
});
const server = http.createServer(async(req,res)=>{//创建http服务器，监听端口3000，处理请求和响应
    //处理跨域问题
    res.setHeader('Access-Control-Allow-Origin','*');//允许所有域名访问
    res.setHeader('Access-Control-Allow-Methods','*');//允许的请求方法
    res.setHeader('Access-Control-Allow-Headers','*');//允许的请求头
    if(req.url.includes('/api/users')){ //接口地址  //判断请求的url是否为/api/users
        const url = new URL(req.url,`http://${req.headers.host}`)
        const query = url.searchParams.get('name')//获取查询参数name的值
        // console.log(query);
        
        if(query=='all'){
            const data = fs.readFileSync('./db.json','utf8');//读取db.json文件，返回文件内容
            const users = JSON.parse(data).users;//将文件内容转换为json对象
            res.end(JSON.stringify({
                success:true, //返回成功状态码
                data:users //返回数据
            }))
        }else{
            //让deepseek 去db.json 文件中查找哪一条数据的name 属性值等于 query
            //将这条数据返回给前端
            const data = fs.readFileSync('./db.json','utf8');//读取db.json文件，返回文件内容
            const users = await openai.chat.completions.create({
                messages: [
                    { 
                        role: "system",
                        content: "你是一个编程高手" 
                    },
                    {
                        role: "user",
                        content: `请分析${data}中的数据，找 
                        出一条数据的 name 属性值等于 ${query}，
                        将这条数据读取出来，存放在一个数组中，返回给我，不要任何其他多余的文字，也不需要任何特殊的符号和json字样，
                        返回如下的数据格式：{
                          "data": [{
                                "id": 4,
                                "name": "刘洋",
                                "age": 30,
                                "address": "赣州"
                            }]
                        }`,
                      }
                    ],
                    model: "deepseek-chat",
                  })
                  // console.log(users.choices[0].message.content, '2222');
                  res.end(users.choices[0].message.content)    
                   
        } 
    }
})

server.listen(3000,()=>{//监听端口3000，启动服务器
    console.log('服务启动成功');//输出提示信息
})
